package com.poly.Dynamic;

public class DynamicBonding {
    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.sum());
        System.out.println(a.sum1());
    }
}
//动态绑定机制：
//1. 方法与运行类型绑定，会优先地调用运行类型的方法
//2. 属性没有此机制，在哪里声明就在哪里调用
//方法有动态绑定机制
//属性没有

class A {
    int i = 20;
    int sum () {
        return getI() + i;
    }
    int sum1() {
        return i + 10;
    }
    int getI() {
        return i;
    }
}


class B extends A {
    int i = 120;
//    int sum() {
//        return getI() + i;
//    }
//    int sum1() {
//        return i + 10;
//    }
    int getI() {
        return i;
    }

}
